package com.example.backend.enums;

import lombok.Getter;

/**
 * 响应码枚举类
 */
@Getter
public enum ResultCodeEnum {
    /**
     * 请求成功处理
     */
    SUCCESS(200, "成功"),
    /**
     * 用户未登录
     */
    NOT_LOGIN(401, "用户未登录"),
    /**
     * 用户信息修改成功
     */
    USER_UPDATE_SUCCESS(200, "用户信息修改成功"),
    /**
     * 用户信息删除失败
     */

    USER_DELETE_FAIL(500, "用户删除失败"),
    /**
     * 用户信息恢复失败
     */
    USER_RESTORE_FAIL(500, "用户恢复失败"),
    /**
     * 用户信息不存在
     */
    USER_NOT_EXIST(404, "用户不存在"),
    /**
     * 用户未被删除
     */
    USER_NOT_DELETED(500, "用户未被删除"),
    /**
     * 删除用户不可被恢复
     */
    USER_NOT_RESTORED(500, "用户不可被恢复"),
    /**
     * 用户信息修改失败
     */
    USER_UPDATE_FAIL(500, "用户信息修改失败"),
    /**
     * 请求格式错误（客户端错误）
     */
    BAD_REQUEST(400, "请求格式错误"),
    /**
     * 请求参数不合法或缺失
     */
    PARAM_ERROR(400, "参数错误"),
    /**
     * 请求缺少有效身份认证凭证
     */
    UNAUTHORIZED(401, "未授权"),
    /**
     * 身份认证失败（如用户名或密码错误）
     */
    AUTHENTICATION_FAILED(401, "认证失败"),
    /**
     * Token 已过期，需重新登录获取新 Token
     */
    TOKEN_EXPIRED(401, "token已过期"),
    /**
     * Token 不可用或被服务器拒绝
     */
    FORBIDDEN_TOKEN(403, "token错误"),
    /**
     * Token 签名无效，可能已被篡改
     */
    TOKEN_SIGNATURE_INVALID(401, "签名错误"),
    /**
     * 服务器理解请求，但拒绝执行（权限不足）
     */
    FORBIDDEN(403, "禁止访问"),
    /**
     * 请求的资源不存在
     */
    NOT_FOUND(404, "资源不存在"),
    /**
     * 服务器内部异常，无法完成请求
     */
    INTERNAL_SERVER_ERROR(500, "服务器内部错误"),
    /**
     * 添加地址失败
     */
    ADDRESS_ADD_FAILED(500, "添加地址失败"),
    /**
     * 删除地址失败
     */
    ADDRESS_DELETE_FAILED(500, "删除地址失败"),
    /**
     * 更新地址失败
     */
    ADDRESS_UPDATE_FAILED(500, "更新地址失败"),
    /**
     * 获取购物车失败
     */
    Cart_CREATE_FAIL(500, "创建购物车失败"),
    /**
     * 删除购物车失败
     */
    Cart_DELETE_FAIL(500, "删除购物车失败"), Cart_UPDATE_FAIL(500, "更新购物车失败"),
    CATEGORY_CREATE_FAIL(500, "创建分类失败"), CATEGORY_UPDATE_FAIL(500, "更新分类失败");


    private final int code;
    private final String message;

    ResultCodeEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public static ResultCodeEnum getResultCodeEnum(int code) {
        for (ResultCodeEnum resultCodeEnum : ResultCodeEnum.values()) {
            if (resultCodeEnum.getCode() == code) {
                return resultCodeEnum;
            }
        }
        return null;
    }

    public static String getMessage(int code) {
        for (ResultCodeEnum resultCodeEnum : ResultCodeEnum.values()) {
            if (resultCodeEnum.getCode() == code) {
                return resultCodeEnum.getMessage();
            }
        }
        return null;
    }

    public static boolean isSuccess(int code) {
        return code == SUCCESS.getCode();
    }
}

